//package ntd.util.frame.wx.miniapp.controller;
//
//import cn.binarywang.wx.miniapp.api.WxMaService;
//import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
//import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
//import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
//import cn.hutool.core.date.DateUtil;
//import cn.hutool.log.StaticLog;
//import me.chanjar.weixin.common.error.WxErrorException;
//import ntd.util.frame.wx.miniapp.WxMaConfiguration;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.PathVariable;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.math.BigDecimal;
//import java.util.HashMap;
//
///**
// * 微信小程序用户接口
// *
// * @author <a href="https://github.com/binarywang">Binary Wang</a>
// */
//@RestController
//@RequestMapping("/wx/user/{appid}")
//public class WxMaUserController {
//    private final IUserService userService;
//    public WxMaUserController(IUserService userService) {
//        this.userService = userService;
//    }
//
//    /**
//     * 登陆接口
//     */
//    @GetMapping("/login")
//    public Object login(@PathVariable String appid, String code) {
//        if (StringUtils.isBlank(code)) {
//            return "参数code未收到！";
//        }
//        final WxMaService wxService = WxMaConfiguration.getMaService(appid);
//        try {
//            WxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(code);
//            StaticLog.info(session.getSessionKey());
//            StaticLog.info(session.getOpenid());
////            User user = userService.query().eq("union_id", session.getUnionid()).one();
//            User user = userService.query().eq("openid", session.getOpenid()).one();
//            if (user == null) {
//                user = new User();
//                user.setPrice(new BigDecimal("0"));
//                user.setPassword(new BCryptPasswordEncoder().encode("123456"));
//                user.setOpenid(session.getOpenid());
//                user.setUsername(session.getOpenid());
//                user.setNickName("用户" + DateUtil.now());
//                user.setSessionKey(session.getSessionKey());
//                user.setUnionId(session.getUnionid());
//            }
//            user.setSessionKey(session.getSessionKey());
//            userService.saveOrUpdate(user);
//            final HashMap<Object, Object> result = new HashMap<>();
//            result.put("token", UtilJwtToken.generateToken("mblu2_" + user.getUsername()));
//            result.put("user", user);
//            return MR.ok(result);
//        } catch (WxErrorException e) {
//            UtilLog.err(e.getMessage(), e);
//            return e.toString();
//        }
//    }
//
//    /**
//     * <pre>
//     * 获取用户信息接口
//     * </pre>
//     */
//    @GetMapping("/info")
//    public String info(@PathVariable String appid, String sessionKey,
//                       String signature, String rawData, String encryptedData, String iv) {
//        final WxMaService wxService = WxMaConfiguration.getMaService(appid);
//
//        // 用户信息校验
//        if (!wxService.getUserService().checkUserInfo(sessionKey, rawData, signature)) {
//            return "user check failed";
//        }
//
//        // 解密用户信息
//        WxMaUserInfo userInfo = wxService.getUserService().getUserInfo(sessionKey, encryptedData, iv);
//
//        return "";
//    }
//
//    /**
//     * <pre>
//     * 获取用户绑定手机号信息
//     * </pre>
//     */
//    @GetMapping("/phone")
//    public String phone(@PathVariable String appid, String sessionKey, String signature,
//                        String rawData, String encryptedData, String iv) {
//        final WxMaService wxService = WxMaConfiguration.getMaService(appid);
//        // 用户信息校验
//        if (!wxService.getUserService().checkUserInfo(sessionKey, rawData, signature)) {
//            return "user check failed";
//        }
//        // 解密
//        WxMaPhoneNumberInfo phoneNoInfo = wxService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, iv);
//        return "";
//    }
//
//}
